Extended keyboard user interface

ABSTRACT

The subject matter of this document can be implemented in, among other things, a method that includes displaying, on a user interface of a computing device, a base portion of a keyboard. The method further includes receiving, on the user interface, a user input that includes initiating a contact at a first region of the user interface that is associated with the base portion of the keyboard, moving the contact, while maintaining connection with the user interface, to a second region of the user interface that is outside the first region and that is associated with an extended portion of the keyboard, and releasing the contact at a location within the second region. The method further includes activating a selection in the extended portion of the keyboard based on the location within the second region at which the contact is released.

TECHNICAL FIELD

This document relates to a user interface of a computing device.

BACKGROUND

Modern electronic devices may include one or more input devices thatallow users to enter alphanumeric text and other characters and symbolsinto those devices. For example, a mobile device may include voicerecognition software that transforms verbal commands into text, or mayinclude handwriting recognition software that identifies certainpatterns of curves and lines and resolves those patterns into acorresponding textual input. But, despite the proliferation of voice,handwriting, and other types of user input mechanisms, the keyboardstill remains the standard input device for text-based user interfaces.

Over the years, certain aspects of keyboards as text-entry devices havechanged surprisingly little. For example, the ubiquitous QWERTY keyboardlayout, which was originally designed in the 1870s to prevent mechanicaltypewriters from jamming, is still in use on many English languagekeyboards today, even though the problems associated with jamming arelong in the past. However, one thing that has changed significantly isthe size of the devices in which keyboards are being used. As computingdevices, and especially mobile computing devices, have become smallerand smaller, and as the area devoted to applications and other contenthas become larger and larger, the area devoted to keyboards has becomecorrespondingly smaller.

The attempt to provide fully functional keyboards in smaller spaces may,to some extent, be limited by the size of the device and the areadevoted to the keyboard, but the size of useable keys may also be animportant consideration. If the keys are too small, the user may havedifficulty selecting the desired key, or may mistakenly select two ormore keys at once.

One approach to address these space considerations has been to assignmultiple characters to individual keys, and to select from the multiplecharacters based on how the user interacts with the key. For example, atriple-tap keyboard may have the letters “j,” “k,” and “l” all assignedto a single key, where a “j” is entered if the user taps the key once, a“k” is entered if the user taps the key twice in rapid succession, andan “l” is entered if the user taps the key three times in rapidsuccession. Similarly, a “shift” or a “function” key may be used incombination with another key to choose a different input than thatassociated with pressing the key while not holding down the respective“shift” or “function” key. These and other approaches to keyboard designhave included assigning multiple characters to a single key, with theuser input being based on how the user interacts with that key.

SUMMARY

In general, this document describes techniques that allow a user toselect an input key from a virtual keyboard that is not typicallydisplayed on a standard virtual keyboard, and to make the selectionusing a single, continuous gesture or movement. For example, a user maytouch a part of a touch screen that is displaying the standard virtualkeyboard, drag his finger (or a stylus) to a part of the screen that isoutside the standard virtual keyboard (e.g., either above, below, or toeither side of the standard keyboard), and release the contact with thetouch screen to select a number or symbol that is associated with thelocation of the release point. As the user's finger, for example, movesoutside the area of the standard virtual keyboard, an extended virtualkeyboard may be displayed to show the user the additional keys that areavailable for selection. However, if the user is familiar enough withthe location of the additional keys and their corresponding releasepoints, the user can select a key without waiting for the extendedkeyboard to be displayed.

In one embodiment, a method includes displaying, on a user interface ofa computing device, a base portion of a keyboard. The method furtherincludes receiving, on the user interface, a user input that includesinitiating a contact at a first region of the user interface that isassociated with the base portion of the keyboard, moving the contact,while maintaining connection with the user interface, to a second regionof the user interface that is outside the first region and that isassociated with an extended portion of the keyboard, and releasing thecontact at a location within the second region. The method furtherincludes activating a selection in the extended portion of the keyboardbased on the location within the second region at which the contact isreleased.

Certain implementations may include one or more of the followingfeatures. The method can include displaying, on the user interface, theextended portion of the keyboard in response to the contact moving intothe second region of the user interface, and removing the display of theextended portion of the keyboard in response to release of the contact,or in response to the contact moving out of the second region of theuser interface. The second region of the user interface may overlap witha third region of the user interface that is associated with anapplication executing on the computing device. The method can includeproviding a feedback in response to the contact moving into the secondregion of the user interface, or in response to release of the contact.The feedback can include an audible or vibratory response from thecomputing device. The displayed extended portion of the keyboard can besemi-transparent with respect to other information displayed on the userinterface. The layout of the keys included in the extended portion ofthe keyboard, and the character associated with a key of the extendedkeyboard can be based on the application executing the keyboard. Theuser interface can include a touch screen of the computing device, andthe contact can include a digit of a user contacting the user interface.

In another embodiment, a computer-implemented system includes agraphical user interface configured to display a primary keyboard in afirst area of the user interface. The primary keyboard includes a set ofprimary keys. The system further includes means for activating aselection of a secondary key from an extended keyboard using a single,continuous gesture that is initiated while the extended keyboard is notdisplayed on the user interface, wherein the extended keyboard isassociated with a second area of the user interface that is separatefrom the first area.

The techniques described herein may provide one or more of the followingadvantages. In some implementations, the selection techniques may allowfor an efficient, single-gesture input of numbers, special symbols, orother characters that are not typically associated with a standardvirtual keyboard, rather than using multiple keystrokes or complex menusystems to enter the same character. In addition, the virtual keyboarddisplay may remain uncluttered by providing the additional keys in aseparate space from the standard keys, rather than displaying multipledifferent input options that are associated with individual keys on theuser interface. Furthermore, the extended keyboard may be selectivelyrendered on the user interface in a manner that allows unobtrusive inputof the characters associated with the extended keyboard.

The details of one or more embodiments are set forth in the accompanyingdrawings and the description below. Other features, objects, andadvantages will be apparent from the description and drawings, and fromthe claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a diagram illustrating example screens of a computing deviceas a user interacts with the device.

FIG. 2 is a diagram illustrating additional example screens of acomputing device as a user interacts with the device.

FIG. 3 is a diagram illustrating an example user interface of acomputing device.

FIG. 4 is a diagram illustrating an example user interface of acomputing device.

FIG. 5 is a conceptual diagram illustrating example components of acomputing device.

FIG. 6 is a flow diagram illustrating an example process for activatingan input selection.

FIG. 7 is a conceptual diagram illustrating example components of acomputing system that may be used to implement one or more of thetechniques described in this document.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

In general, this disclosure describes techniques for inputtingcharacters into a computing device using an extended virtual or softkeyboard of the computing device. The extended keyboard includes keysassociated with characters that are not available on a standard virtualkeyboard that is used for entering text into the computing device. Usinga single, continuous gesture or movement, a user may access the extendedvirtual keyboard, and select a non-standard character from the extendedvirtual keyboard for entry into the computing device. The gesture ormovement may include contacting the computing device in a region that isassociated with the standard virtual keyboard, and sliding the contactoutside the region associated with the standard virtual keyboard andinto a region associated with the extended virtual keyboard. Uponrelease of the contact in the region associated with the extendedvirtual keyboard, a character from the extended keyboard is input basedon the location where the release occurred. For example, if the userreleases the contact in an area of the extended keyboard associated withan “&” key, then an “&” character is input to the computing device. Inthis example, the “&” key is not available to be directly selected fromthe standard keyboard. In some situations, the user may become familiarenough with the layout of the extended keyboard that he can make aselection of a key before the extended keyboard is displayed on thescreen.

FIG. 1 is a diagram illustrating example screens of a computing deviceas a user interacts with the device. As shown in the example, a seriesof screens 110, 115, and 120 may be shown on a computing device 105,such as a mobile device (e.g., a smart phone). Screens 110-120illustrate an example progression, according to the techniques describedherein, as the user provides input to the computing device. Screens110-120 may be displayed on a monitor or any other appropriate displaydevice for presentation of visual information to a user of the computingdevice. In the example of FIG. 1, screens 110-120 are shown on a displayof a smart phone 105. In other implementations, screens 110-120 may beshown on other types of displays, such as on a monitor connected to adesktop computer, or the like.

The computing device may include one or more input devices that allow auser to interact with the device. Example input devices may include, forexample, a mouse, a touchpad, or a trackpad. In some implementations,these input devices may allow a user to control a cursor or other typeof pointer to facilitate entry of characters into the computing device.In other implementations, the display and the input mechanism of thecomputing device may be combined, such as in a touch screen userinterface that both displays the screens to the user, and also acceptsuser inputs via touch from the user, a stylus, or the like.

Screen 110 shows an example e-mail application that is running oncomputing device 105. The e-mail application allows the user to entertext into various fields, such as a “To” field and a “Body” field. Thee-mail application shown is for illustrative purposes only, and itshould be understood that the techniques described in this disclosureare applicable to any application or interface that allows input via avirtual keyboard.

Screen 110 also shows an example of a standard keyboard that is used inconjunction with the e-mail application to allow the user to enter textinto the appropriate fields. The content and layout of the standardkeyboard may be different in various contexts, depending on theconfiguration of the user interface and the application that is usingthe keyboard. For example, in a traditional text-entry context, thestandard keyboard may include letters and other commonly used keys orcharacters to allow the user to efficiently enter text into thecomputing device. As another example, such as in a gaming context, thestandard keyboard may include various other keys and inputs that arespecifically optimized for use with the game.

In the example shown in FIG. 1, the standard keyboard includes thelower-case letters of the English alphabet. The standard keyboard alsoincludes other text entry keys, such as an “upper-case” key, a “spacebar” key, and a “.” key, among others. If the user wishes to enter acharacter from among the standard keys, he may select the key usingknown techniques, such as by selecting and releasing the appropriatekey. For example, to enter an “h” into the e-mail application, the usermay contact (e.g., by touching) the area associated with the “h” key,and release the contact. According to various implementations, if a usertouches the screen in one location of the standard keyboard and releasesthe touch in another location of the standard keyboard, a number ofdifferent things may happen. In one implementation, the key that waspressed first may be input. For instance, if the user first touches the“j” key, and then slides to the “o” key, then “j” would be entered inthe text box.

In another implementation, both the key that was pressed first, and thekey that the user moved to may be input to the computing device. In theprevious example, “jo” would be entered in the text box. In anotherimplementation, only the key where the user released may be input. Inthe example above, “o” would be entered in the text box. In anotherimplementation, if the user does not release from the same location asthe original touch, then nothing may be entered, as the device mayinterpret the selection as invalid or as a mistake by the user. In yetanother implementation, the computing device may ask the user which keyentry was intended, such as via an onscreen dialog box.

To input a character that is not accessible via the standard keyboard,the user may access an extended keyboard, such as the one displayed inscreen 115. As shown in example screen 115, the extended keyboard islocated above the standard keyboard and includes a top row of characters(including “!, @, #, &, -, ’, :, ”, /, and ?” in the example shown), anda bottom row of numbers (including “1, 2, 3, 4, 5, 6, 7, 8, 9, and 0” inthe example shown). The content and the layout of the keys on theextended keyboard in screen 115 are shown for illustrative purposesonly, and other configurations are possible. For example, the extendedkeyboard may include a single row of keys, or more than two rows ofkeys. As another example, the rows of the extended keyboard may beswitched, such that the row of numbers is the top row of the keyboard.In yet another example, the keys may instead correspond to uppercaseletters of the alphabet. As described in further detail below, thecontent and configuration of the extended keyboard may also be based ona number of different factors, including the type of computing device,the application that is executing on the computing device, and theuser's previous activity or preferences, for example.

As can be seen in example screen 110, the extended keyboard is not shownon the computing device 105 until the user activates the extendedkeyboard using the gesture shown in screen 110. To activate the extendedkeyboard, the user first makes contact with the standard keyboardportion of the user interface, and then, while still holding the contactwith the screen, sliding the contact upwards to the portion of the userinterface that is associated with the extended keyboard, such aslocation 130. The sliding motion is represented by the dotted arrowshown on screen 110. After the contact has moved outside the portion ofthe user interface associated with the standard keyboard, and enteredinto the portion of the user interface associated with the extendedkeyboard, the extended keyboard may be displayed, as shown in screen115.

To select one of the keys from the extended keyboard, the user mayrelease the contact with the user interface at the location associatedwith the desired key. In the example, the extended key where the userreleases the contact, as shown in screen 115, is an “&” key. After theuser releases the contact, the selected character is entered into thee-mail application, as shown in screen 120.

Following actuation of a key from the extended keyboard, the extendedkeyboard may be deactivated and removed from the display immediatelyafter the contact is released by the user. Alternatively, the display ofthe extended keyboard may gradually fade out over a period of time, ormay be removed from the display a relatively short time (e.g., 200milliseconds) after the user releases the contact. In otherimplementations, the extended keyboard may remain activated anddisplayed following a selection of an extended key, and may remainactivated and displayed until the user either touches a key in the basekeyboard or touches another region of the screen, for example. In someimplementations, a combination of these techniques may be used—e.g., theextended keyboard may remain activated and displayed for a period oftime (e.g., 2 seconds) during which time the user may select additionalkeys from the extended keyboard.

Various visual, audible, or tactile feedback mechanisms may be used toindicate to the user that the extended keyboard has been activated.These feedback mechanisms may help the user know whether or not thekeyboard activation gesture has been recognized by the computing device,especially in situations where the extended keyboard has not yet beenvisually displayed. In some implementations, the visual display of theextended keyboard may show the user that the extended keyboard has beenactivated. In other implementations, the computing device may produce anaudible tone to indicate that the extended keyboard is active. In otherimplementations, haptic feedback or other types of tactile feedback maybe provided to the user to signal that the user may enter a key from theextended keyboard by releasing the contact in the appropriate area. Insome implementations, various combinations of these and/or otherappropriate types of feedback may be utilized.

Similar types of feedback may also be provided to indicate to the userthat a key from the extended keyboard has been selected. For example,upon selecting a key from the extended keyboard, a visual, audible, ortactile feedback may indicate the selection event to the user. In someimplementations, various combinations of feedback may be provided to theuser to indicate character selection. For example, a visual cue such asthe selected character appearing on the screen, or the selected keychanging appearance, may be combined with haptic feedback to indicatethat the character has been entered.

FIG. 2 is another diagram illustrating example screens of a computingdevice as a user interacts with the device. In this example, rather thana user's hand being used to enter characters, a pointer 225 is used.Pointer 225 is an on-screen cursor that may be used to interact with thestandard keyboard, the extended keyboard, and the application executingon the computing device. Pointer 225 may be controlled using anyappropriate input device, such as a mouse, a trackball, or the like, tomove pointer 225 to the various regions of screens 210, 215, and 220.

Pointer 225 may be used in a similar fashion as a touch screen inputdescribed above in conjunction with FIG. 1. For example, to choose aletter from the standard keyboard, the user may move pointer 225 to adesired key, and may actuate a selection mechanism on the input device,such as a mouse click. The mouse click may enter the charactercorresponding to the desired key into the computing device. As shown inexample screens 210-220, the user has already begun typing the text“Meet you at” in an e-mail application of the computing device. Anunderscore in the text-entry box shows the location of the nextcharacter that is to be entered.

The activation of the extended keyboard and selection of one of the keysfrom the extended keyboard may also operate in a similar fashion to thegesture described in conjunction with FIG. 1. For example, to input acharacter that is not accessible via the standard keyboard, the user mayactivate an extended keyboard. To activate the extended keyboard, theuser first makes a selection in the standard keyboard portion of theuser interface, such as by clicking while pointer 225 is within theregion associated with the standard keyboard. While holding the click,pointer 225 is then moved to a region of the user interface associatedwith the extended keyboard, such as location 230. This click-and-dragmotion is represented by the dotted arrow shown on screens 210 and 215.In the example shown, the user clicks on the letter “n” in the standardkeyboard region, and drags upwards and to the right to location 230. Itshould be understood that the user may click anywhere in the regionassociated with the standard keyboard to initiate the click-and-dragmotion to activate the extended keyboard.

As pointer 225 exits the region associated with the standard keyboardand enters the region associated with the extended keyboard, theextended keyboard is activated, even if the extended keyboard is notdisplayed on the screen. As such, although the extended keyboard is notdisplayed on screen 215, a two-row extended keyboard such as the oneshown on screen 115 of FIG. 1 may be active and ready for selection of akey once pointer 225 enters the region associated with the extendedkeyboard. As such, when the user releases the click at location 230 ofthe extended keyboard, which corresponds to the “8” key, the “8”character is entered into the computing device as shown in screen 220.Once again, the specific configuration of the extended keyboarddescribed here is for illustration purposes only. The content andconfiguration of the extended keyboard may be based on a number ofdifferent factors, including the type of computing device, theapplication that is executing on the computing device, and the user'sprevious activity or preferences, for example.

As described above, visual, audible, or tactile feedback mechanisms maybe used to indicate to the user that the extended keyboard has beenactivated. These feedback mechanisms may help the user know whether ornot the keyboard activation gesture has been recognized by the computingdevice, especially in situations where the extended keyboard has not yetbeen visually displayed, such as in screen 215. Similar types offeedback mechanisms may also be used to indicate to the user that a keyfrom the extended keyboard has been selected.

FIG. 3 is a diagram illustrating an example user interface of acomputing device. The user interface may include a display screen 310,and off-display input devices, such as hard keys 312-318, and atrackball 320. Hard keys 312-318 may be dedicated keys that areassociated with a particular functionality (or multiple functionalities)of the computing device. For example, in a smart phone, one or more ofhard keys 312-318 may correspond to a “pick up” function of the phone,or a “hang up” function of the phone, etc. Trackball 320 may be used tocontrol a pointer, such as pointer 225, which can be used to select oractuate various functions of the smart phone.

Display screen 310 may be physically and/or logically divided intomultiple regions. In the example shown, display screen 310 is logicallydivided into an application region 330 and a standard keyboard region340, as indicated by the dotted line. The division shown is forillustration purposes, and it should be understood that the contents,size, shape, and/or other configuration of these regions may be alteredin different implementations. The user may interact with the differentregions according to common techniques in the art. For example, the usermay select the “Go!” button in application region 330 to proceed with asearch using a search application executing on the computing device.Similarly, the user may select any of the keys in standard keyboardregion 340 to enter text-based input into the computing device.

An extended keyboard region (not shown) may also be activated on theuser interface if the user has activated the extended keyboard asdescribed above. For example, if the user makes contact in standardkeyboard region 340, and while holding the contact with the screen,moves the contact to a location above the dotted line into a region thatis associated with the extended keyboard, the extended keyboard may beactivated, but not yet shown to the user.

FIG. 4 is another diagram illustrating an example user interface of acomputing device. As shown in the example, the computing device includesthe same regions as those shown in FIG. 3, and it also includes anextended keyboard region 410 that is associated with the extendedkeyboard. As described above, the extended keyboard may be activated anddisplayed in extended keyboard region 410 when a user performs a gestureconsistent with the techniques described herein.

As shown in the example, extended keyboard region 410 overlaps withapplication region 330, but both are logically separated from standardkeyboard region 340, as indicated by the dotted line. When extendedkeyboard region 410 overlaps with application region 330, the keys ofthe extended keyboard may be semi-transparent to allow the user to seethe entire application region 330 while the extended keyboard isdisplayed. In other implementations, application region 330 may beresized when the extended keyboard is activated, such that three logicaldivisions appear on the display. For example, application region 330 maybe shrunk by a corresponding amount of space that extended keyboardregion 410 occupies. In such implementations, the resizing ofapplication region 330 may occur upon activation of the extendedkeyboard, and the size of application region 330 may be restored whenthe extended keyboard is deactivated.

In the example shown in FIG. 4, the application executing on thecomputing device is a search application. The search application has adifferent extended keyboard associated with it than the extendedkeyboard associated with the e-mail application shown in FIGS. 1-2. Assuch, while the standard keyboard that includes lower-case Englishletters may remain the same for both applications, the extended keyboardmay be customized for a search application to include commonly usedBoolean operators and/or other characters that are useful in a searchapplication, but that are not as commonly used in an e-mail application.This and other configuration options for the extended keyboard aredescribed below.

FIG. 5 is a conceptual diagram illustrating example components of acomputing device 510. Computing device 510 may include, for example, aninterface 520, a display module 530, an input module 540, a keyboardselector module 550, a feedback module 560, and data storage 570. Inother implementations, computing device 510 may include different,fewer, or additional modules for performing the techniques describedherein.

Interface 520 of computing device 510 may include various input andoutput devices that allow the user to interact with the device. Outputdevices may include, for example, the display screen and feedbackresponse mechanisms described above. Input devices may include a mouse,a trackball, or the like, to control a pointer or other type of cursorfor interacting with computing device 510. Other input devices mayinclude hard keys and/or a touch screen interface that converts toucheson the screen to inputs to computing device 510.

Computing device 510 also includes a display module 530 that determineswhat should be displayed on the screen, and where those items should bedisplayed on the screen. For example, display module may control whereand how different logical regions, such as application region 330,standard keyboard region 340, and extended keyboard region 410 aredisplayed.

Input module 540 monitors inputs to the user interface, and interpretswhat those inputs mean in a particular context. For example, inputmodule 540 may interpret different types of touches in standard keyboardregion 340 differently. A first type of contact, such as a touch andrelease within standard keyboard region 340 may indicate a user's desireto input a character from the standard keyboard into computing device510, while a second type of contact, such as a touch, hold, and movegesture as described above may indicate a user's desire to activate theextended keyboard.

Keyboard selector module 550 of computing device 510 determines whichkeyboards to use in a particular context. Computing device 510 mayinclude a number of different standard and/or extended keyboards, eachof which may be stored in data storage 570. Various keyboards mayinclude different characters (e.g., English letters, Chinese characters,numbers, symbols, etc.) and/or different configurations (e.g., astandard QWERTY layout, an alphabetical layout, a gaming layout, etc.).In normal situations, keyboard selector module 550 may provide a defaultstandard keyboard and/or a default extended keyboard for entry ofcharacters into computing device 510. In other situations, such as wherean application specifies a particular keyboard, keyboard selector module550 may provide the standard keyboard and/or extended keyboard asspecified by the application that calls for use of the respectivekeyboards.

Keyboard selector module 550 may also be configured to select anappropriate standard and/or extended keyboard for use based on aparticular context, which may take into account a number of differentfactors. For example, the standard and/or extended keyboards may beconfigurable to include different characters or keys, depending on theapplication calling for use of the keyboard (e.g., a character setoptimized for the type of characters most often used in a particularapplication). Similarly, the keyboards may be configurable to include adifferent layout of the characters or keys included on the keyboard(e.g., a layout that places the most often used keys in a prominentposition within the keyboard). The content or layout of the keyboard mayalso be based on the type of device that is being used (e.g., if thedevice already has hard keys assigned to a particular character, thatcharacter may not be included on the standard and/or extended keyboard).In addition, the content or layout of the keyboard may be based on theuser's actions or preferences (e.g., the extended keyboard may includethe last twenty non-standard characters that the user entered to provideeasy access to the non-standard characters used most often by the user).

Feedback module 560 provides feedback to the user based on userinteraction with computing device 510. Feedback module 560 may providevisual, audible, tactile, and/or other appropriate feedback indicators,either alone or in combination. For example, when a user has activatedthe extended keyboard or selected a key from the extended keyboard,feedback module 560 may provide a visual indicator related to theactivation or selection, may provide an audible tone related to theactivation or selection, and/or provide tactile feedback related to theactivation or selection.

Data storage 570 is configured to store information within computingdevice 510 during operation. Data storage 570 is a computer-readablestorage medium that comprises memory, and may be used to store differentconfiguration information, which may be retrieved by respective modules530-560 as needed. For example, different extended keyboardconfigurations may be stored in data storage 570, such as in separatefiles that correspond to the available extended keyboards. Each extendedkeyboard may be represented, for example, in an Extensible MarkupLanguage (“XML”) configuration file that defines the appearance,content, and location of the keys that are included on the extendedkeyboard. In some implementations, the XML configuration file may bestored in data storage 570, and may be retrieved using keyboard selectormodule 550 if the module determines that the particular configuration isto be used.

FIG. 6 is a flow diagram illustrating an example process 600 foractivating an input selection. Example process 600 may be used by acomputing device, e.g. computing device 105, or various modules 530-560of computing device 510, to activate an input selection of a key fromeither the standard or extended keyboard.

Example process 600 begins when a user initiates a contact in thestandard keyboard region, e.g., region 340, of a computing device (610).The computing device then monitors the contact to determine whether thecontact is released in the standard keyboard region (620). If thecontact is released in the standard keyboard region, then the computingdevice activates a selection of a standard key (630). For example, toenter a “g” character into an application executing on the computingdevice, the user may touch the area associated with the “g” key in thestandard keyboard region, and release the touch.

If the contact is not released in the standard keyboard region, then itis determined whether the contact has moved to the extended keyboardregion, e.g., region 410, of the computing device (640). If not, thenthe computing device continues to monitor whether the contact isreleased in the standard keyboard region (620).

If the contact is moved to the extended keyboard region of the computingdevice, then the extended keyboard is activated and displayed to theuser (650). As described above, the extended keyboard may becomeactivated before the keyboard is displayed to the user, and the user canmake a selection from the extended keyboard without the keyboard firstbeing displayed. Depending on the context of how the extended keyboardis being used, different extended keyboards and/or configurations may bedisplayed to the user upon activation, as described in greater detailabove. In some situations, the extended keyboard may not be displayed tothe user, such as if the user quickly moves the contact outside of theextended keyboard region, or if the user quickly releases the contact inthe extended keyboard region. In both situations, the screen may notupdate quickly enough for the extended keyboard to be displayed.

The computing device also monitors whether the contact has been movedout of the extended keyboard region (652). If the user does move thecontact out of the extended keyboard region, such as by moving thecontact back into the standard keyboard region, the extended keyboard isdeactivated and the display of the extended keyboard is removed (654).

If the contact has not moved out of the extended keyboard region, thecomputing device monitors whether the contact is released in theextended keyboard region (660). If not, the computing device continuesto monitor whether the contact has been moved out of the extendedkeyboard region (652). But if the contact is released in the extendedkeyboard region, the computing device activates the selection of theappropriate extended key (670). For example, each of the keys in theextended keyboard may be assigned a particular area, such that if theuser releases the contact in a location that is within the assignedarea, the character associated with that key is entered into thecomputing device. So, if the user releases the contact at a locationwithin the area assigned to the “*” key on the extended keyboard, thenthe “*” character is input into the computing device. Following theselection of a key from the extended keyboard, the extended keyboard maybe deactivated, and the display of the extended keyboard may be removed(680).

FIG. 7 is a conceptual diagram illustrating example components of acomputing system that may be used to implement the techniques describedin this document. As depicted in FIG. 7, computing system 700 mayinclude various types of computing devices, such as a desktop computer,a smart phone, a network server, or a mainframe computer. Although notdepicted in FIG. 7, devices incorporated in computing system 700 mayalso or alternatively include any number of other devices configured tocompute and/or communicate via a network, including laptop computers andmobile devices such as mobile phones, personal digital assistants, orother mobile devices. Any of these computing devices may berepresentative of computing device 510 depicted in FIG. 5.

System 700 includes a processor 710, a memory 720, a storage device 730,and an input/output component 740. Each of components 710, 720, 730, and740 may be interconnected via a system bus 750 for inter-componentcommunications. Processor 710 may be configured to process instructionsfor execution within system 700. Processor 710 may be a single threadedprocessor, or may be a multi-threaded processor configured to processvarious instructions in parallel simultaneously. Processor 710 may becapable of processing instructions stored in memory 720 or instructionsstored on storage device 730. In one example, processor 710 may beconfigured to process instructions to cause a computing device toactivate an input selection, as shown in one embodiment in FIG. 6.

System 700 further includes peripheral devices 760. Peripheral devices760 may include, for example, a monitor or other display device forpresentation of visual information to a user of system 700. Peripheraldevices 760 may further include one or more input devices to enable auser to input data to system 700, e.g., a keyboard, mouse, touchpad,trackpad, etc. Peripheral devices 760 may further include printers orother devices to output information. In one example, processor 710 maybe configured to process instructions to cause a screen, e.g., screen110 of FIG. 1, to be displayed to a user via a display of peripheraldevices 760.

Memory 720 may be configured to store information within system 700during operation. Memory 720 may be described as a computer-readablestorage medium. In some examples, memory 720 is a temporary memory,meaning that a primary purpose of memory 720 is not long-term storage.Memory 720 may also be described as a volatile memory, meaning thatmemory 720 does not maintain stored contents when the computer is turnedoff. Examples of volatile memories include random access memories (RAM),dynamic random access memories (DRAM), static random access memories(SRAM), and other forms of volatile memories known in the art.

In some examples, memory 720 may be used to store program instructionsfor execution by processor 710. In other examples, memory 720 may beused by software or applications running on system 700 to temporarilystore information during program execution.

Storage device 730 may also be described as a computer-readable storagemedium. In contrast to memory 720, storage device 730 may be configuredto store larger amounts of information than memory 720. Storage device730 may further be configured for long-term storage of information. Insome examples, storage device 730 is a non-volatile memory component. Incontrast with a volatile memory component, a non-volatile memory maystore data whether or not power is supplied to storage device 730.Examples of non-volatile storage devices include magnetic hard discs,optical discs, floppy discs, Flash memories, and other forms ofelectrically programmable memories (EPROM) or electrically erasable andprogrammable (EEPROM) memories.

The techniques described here may be implemented according to acomputing system 700 as described with respect to FIG. 7 in anycombination of digital electronic circuitry, computer hardware,firmware, software, or any combination of digital electronic circuitry,computer hardware, firmware, software. For example, any of thetechniques described herein may be implemented via executable programinstructions stored in a computer-readable storage medium (e.g., memory720 and/or storage device 730) that are readable by processor 710 tocause processor 710 to perform the techniques of this disclosure. Inother examples, some or all of the techniques of this disclosure mayinstead or in addition be implemented via dedicated hardware configuredfor a specific purpose, e.g., a field programmable gate array (FPGA),application specific integrated circuit (ASIC), digital signal processor(DSP), or another like device. The term “processor” or “processingcircuitry” may generally refer to any of the foregoing logic circuitry,alone or in combination with other logic circuitry, or any otherequivalent circuitry.

Such hardware, software, and firmware may be implemented within the samedevice or within separate devices to support the various operations andfunctions described in this disclosure. In addition, any of thedescribed units, modules, or components may be implemented together orseparately as discrete but interoperable logic devices. Depiction ofdifferent features as modules or units is intended to highlightdifferent functional aspects and does not necessarily imply that suchmodules or units must be realized by separate hardware or softwarecomponents. Rather, functionality associated with one or more modules orunits may be performed by separate hardware or software components, orintegrated within common or separate hardware or software components.

The described features can be implemented advantageously in one or morecomputer programs that are executable on a programmable system includingat least one programmable processor coupled to receive data andinstructions from, and to transmit data and instructions to acomputer-readable storage medium. A computer program can be written inany form of programming language, including compiled or interpretedlanguages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment.

The described features can be implemented in a computer system thatincludes a back-end component, such as a data server, or that includes amiddleware component, such as an application server or an Internetserver, or that includes a front-end component, such as a clientcomputer having a graphical user interface or an Internet browser, orany combination of them. The components of the system can be connectedby any form or medium of digital data communication such as acommunication network. Examples of communication networks include, e.g.,a LAN, a WAN, and the computers and networks forming the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork, such as described above. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the disclosure. For example, the logic flowsdepicted in the figures do not require the particular order shown, orsequential order, to achieve desirable results. In addition, otheractions may be provided, or actions may be eliminated, from thedescribed flows, and other components may be added to, or removed from,the described systems. Accordingly, other embodiments are within thescope of the following claims.

1. A method comprising: outputting, at a touch-sensitive display coupled to a computing device, a base portion of a virtual keyboard; receiving at the touch-sensitive display, (1) an initial contact at a first region of the touch-sensitive display, the first region being associated with the base portion of the virtual keyboard, and (2) a dragging contact that originates at the first region of the touch-sensitive display and terminates at a location within a second region of the touch-sensitive display, the second region being outside the first region and associated with an extended portion of the virtual keyboard; outputting, at the second region of the touch-sensitive display and in response to (2), the extended portion of the virtual keyboard; and activating a selection in the extended portion of the virtual keyboard based on the location within the second region.
 2. The method of claim 1, further comprising removing the extended portion of the virtual keyboard from the touch-sensitive display in response to termination of the dragging contact.
 3. The method of claim 1, wherein the extended portion of the virtual keyboard is semi-transparent with respect to other information displayed on the touch-sensitive display.
 4. The method of claim 1, wherein one or more keys included in the extended portion of the virtual keyboard are based on the application executing the virtual keyboard.
 5. The method of claim 4, wherein a layout of the keys included in the extended portion of the virtual keyboard is based on an application executing the virtual keyboard.
 6. The method of claim 4, wherein a character associated with a key at the location is based on an application executing the virtual keyboard.
 7. The method of claim 1, wherein the second region overlaps with a third region of the touch-sensitive display, wherein the third region is associated with an application executing at the computing device.
 8. The method of claim 1, further comprising outputting feedback in response to (2).
 9. The method of claim 8, wherein the feedback comprises an audible response output by the computing device.
 10. The method of claim 8, wherein the feedback comprises a tactile response output by the computing device.
 11. The method of claim 1, further comprising outputting feedback in response to termination of the dragging contact.
 12. The method of claim 11, wherein the feedback comprises an audible response output by the computing device.
 13. The method of claim 11, wherein the feedback comprises a tactile response output by the computing device.
 14. The method of claim 1, wherein the dragging contact is executed by a digit of a user that touches the touch-sensitive display.
 15. A computer-readable storage medium comprising instructions that, when executed, cause one or more processors to: output at a touch-sensitive display coupled to a computing device, a base portion of a virtual keyboard; receive at the touch-sensitive display, (1) an initial contact at a first region of the touch-sensitive display, the first region being associated with the base portion of the virtual keyboard, and (2) a dragging contact that originates at the first region of the touch-sensitive display and terminates at a location within a second region of the touch-sensitive display, the second region being outside the first region and associated with an extended portion of the virtual keyboard; output, at the second region of the touch-sensitive display and in response to (2), the extended portion of the virtual keyboard; and activate a selection in the extended portion of the virtual keyboard based on the location within the second region.
 16. The computer-readable storage medium of claim 15, wherein the instructions further cause one or more processors to remove the extended portion of the keyboard in response to termination of the dragging contact.
 17. A tangible computer-implemented system comprising: a processor; a touch-sensitive display operatively coupled to the processor and configured to output a primary virtual keyboard in a first area of the touch-sensitive display, wherein the primary virtual keyboard includes a set of primary keys, wherein the touch-sensitive display is configured to output an extended virtual keyboard in a second area of the touch-sensitive display, the second area being outside the first area in response to receiving at the touch-sensitive display (1) an initial contact at the first area of the touch-sensitive display, the first area being associated with the primary virtual keyboard, and (2) a dragging contact that originates at the first area of the touch-sensitive display and terminates at a location within the second area of the touch-sensitive display; and means for activating a selection of a secondary key from the extended virtual keyboard based on the location within the second area. 